﻿using System;
using System.Collections.Generic;
using System.Data;

using Joel.ImpresionesJL.Modelo.Entidades;
using Joel.ImpresionesJL.AccesoDatos;
using Joel.ImpresionesJL.Modelo.Entidades.Tipos;
using Joel.ImpresionesJL.Repositorios.Tipos;

namespace Joel.ImpresionesJL.Repositorios
{
    public class RepositorioTelefono : RepositorioBase<Telefono>
    {
        #region Constructores

        public RepositorioTelefono()
        { }

        #endregion

        #region Propiedades

        private ServicioDatosTelefono ServicioDatosTelefono
        { get { return new ServicioDatosTelefono(); } }

        private RepositorioTipoTelefono RepositorioTipoTelefono
        { get { return new RepositorioTipoTelefono(); } }

        #endregion

        #region Metodos

        protected override Telefono FilaAEntidad(DataRow fila)
        {
            var entidad = new Telefono();
            entidad.Id = Convert.ToInt32(fila["IdClienteTelefono"]);
            entidad.Tipo = RepositorioTipoTelefono.DevolverPorId(Convert.ToByte(fila["IdTipoTelefono"]));
            entidad.Numero = Convert.ToString(fila["Numero"]);
            return entidad;
        }

        #region ClientesTelefonos

        public Telefono ClientesTelefonos_DevolverPorId(Int32 idClienteTelefono)
        {
            var telefono = new Telefono();
            var ds = new DataSet();
            ds = ServicioDatosTelefono.ClientesTelefonos_DevolverPorId(idClienteTelefono);
            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                telefono = FilaAEntidad(ds.Tables[0].Rows[0]);
            return telefono;
        }

        public List<Telefono> ClientesTelefonos_DevolverPorIdCliente(Int32 idCliente)
        {
            var lista = new List<Telefono>();
            var ds = new DataSet();
            ds = ServicioDatosTelefono.ClientesTelefonos_DevolverPorIdCliente(idCliente);
            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                lista = TablaALista(ds.Tables[0]);
            return lista;
        }

        public Int32 ClientesTelefonos_Insertar(Int32 idCliente, Int32 idTipoTelefono, String numero)
        {
            return ServicioDatosTelefono.ClientesTelefonos_Insertar(idCliente, idTipoTelefono, numero);
        }

        public void ClientesTelefonos_Modificar(Int32 idClienteTelefono, Int32 idCliente, Int32 idTipoTelefono, String numero)
        {
            ServicioDatosTelefono.ClientesTelefonos_Modificar(idClienteTelefono, idCliente, idTipoTelefono, numero);
        }

        public void ClientesTelefonos_Eliminar(Int32 idClienteTelefono)
        {
            ServicioDatosTelefono.ClientesTelefonos_Eliminar(idClienteTelefono);
        }

        #endregion

        #endregion
    }
}
